#pragma once

#include "Camera.h"
#include "Cube.h"
#include "Player.h"
#include "Physics.h"
#include "Pyramid.h"
#include "LightManager.h"
#include <list>
using namespace std;
class CGame
{
public:
	const char8_t *GetGameTitle(){return mGameTitle;}
	static CGame	*CreateInstance();
	static CGame	*GetInstance() {return sInstance;};
	~CGame();
	void DrawScene();
	void UpdateFrame(float_t argDeltaTime);
	void UpdateCamera(float_t milliseconds);
	void DestroyGame();
	void init();
	void shutdown();
	static const uint32_t mScreenWidth = 1024;
	static const uint32_t mScreenHeight = 768;
	static const uint32_t mBitsPerPixel = 32;
private:
	static const char8_t mGameTitle[20];
	static CGame *sInstance;
	Camera m_camera;
	list<BaseShape*> *m_MapObjList;
	Player m_player;
	ImpossiblePhysics::Physics m_physicsHandle;
	LightManager m_lightManager;

	// Debug shapes
	Pyramid m_pyramid1;
	Cube m_cube1;
	Cube m_cube2;
	Cube m_cube3;
};